<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>购物车实战</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

<!--

商品序号、名称、单价、数量都是直接使用插值完成的，在第4列中的两个按钮<button>用于对购买数量的减少/增加操作，
分别绑定了两个方法handleReduce和handleAdd，参数都是当前商品在list数组中的索引。
很多时候在一个元素上，会同时使用多个特性（尤其在组件中使用props传递数据时），写在一行代码较长，不便于阅读，
建议特性过多时，将每个特性都单独写为一行，如第一个<button>中使用了v-bind和v-on指令。
每件商品购买数量最少是1件，所以当count为1的时候，不允许再减少，这里给<button>动态绑定了disabled特性来禁用按钮。

-->

<div id="app" v-cloak>
    <template v-if="list.length">
        <table>
            <thead>
            <tr>
                <td>商品ID</td>
                <td>商品名称</td>
                <td>商品价格</td>
                <td>购买数量</td>
                <td>操作</td>
            </tr>
            </thead>

            <tbody>
            <tr v-for="(item,index) in list">   <!-- 注意此处(item,index)内的顺序不能颠倒 -->
                <td>{{ index+1 }}</td>
                <td>{{ item.name }}</td>
                <td>{{ item.price }}</td>
                <td>
                    <button type="button" @click="handleReduce(index)" :disabled="item.count===1">-</button>
                    {{ item.count }}
                    <button type="button" @click="handleAdd(index)">+</button>
                </td>

                <td>
                    <button @click="handleRemove(index)">移除</button>
                </td>

            </tr>
            </tbody>
        </table>
        <div>总价：￥ {{ totalPrice }}</div>
    </template>
    <div v-else>购物车为空</div>
</div>


<!--
注意这里必须将vue.js和index.js放在body的最底部，如果放在<head>中，Vue实例将无法创建，因为此时DOM还未被解析完成，
除非是通过异步或者DOMContentLoaded（IE是onreadystatechange）触发时再创建Vue实例，其实有点像Jquery的$(document).ready()方法。
-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript" src="index.js"></script>
</body>
</html>